package org.opens.magicByte;

import com.github.misterchangray.core.annotation.MagicClass;
import com.github.misterchangray.core.annotation.MagicField;
import com.github.misterchangray.core.enums.TimestampFormatter;
import lombok.Data;

import java.util.Date;
import java.util.List;

@MagicClass()
@Data
public class Student {

    // 10 byte, 普通数据, 字符串长度为 10
    @MagicField(order = 1, size = 10)
    private String name;

    // 4 byte, 普通数据, 整数, 此字段决定后续 phones 字段长度
    @MagicField(order = 5)
    private int length;

    // 总字节数 = phones.size * length
    // 单个元素 8 byte, 此List并未直接指定大小, 大小由 length 字段决定. length字段数据类型只能为 byte, short, int
    @MagicField(order = 10, dynamicSizeOf = 5)
    private List<Long> phones;

    // 1 byte
    @MagicField(order = 15)
    private byte age;

    // 生日, 这里为秒级时间戳, 使用无符号整形, 指定使用4个字节, 未指定则默认6个字节
    @MagicField(order = 18, size = 4, timestampFormat = TimestampFormatter.TO_TIMESTAMP_SECONDS)
    private Date birthDay;

}
